LoginSignup
cheibi
@cheibi

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Arduino-Picoでのオーディオ出力について

解決したいこと

ArduinoIDEを用いてRaspberryPiPicoを使用しています。
TRRSのイヤホンジャックのブレイクアウトボードを最近購入し、イヤホンからSDカード内のwavファイルを再生するということをしようと考えています。しかし、ほとんどが専用の拡張ボードなどを使用した記事ばかりで、方法がわかりません。
TRRSのイヤホンジャックのブレイクアウトボードとSDカードモジュール、Arduino-Picoを用いてイヤホンから音楽を流せる方法やライブラリなど教えていただきたいです。

不可能ならば使用すべきモジュールを教えてほしいですが、可能な限り上記のもののみで完結させたいです。

自分で試したこと

https://cotechworks.ltt.jp/2023/09/13/post-1048/
こちらのサイトを参考にして簡単なドレミファは流せています。
TMRpcmライブラリーを使用しようとしましたが、ライブラリーにコンパイルエラーが起こります。おそらくボードがArduinoではないからだと思います。

0

1Answer

MP3ファイルなら、CircuitPythonで再生できるようです。


上で案内したURLに記載のコードで簡単にmp3が再生できました。

  1. wavファイルをmp3ファイルに変換しておく
  2. スピーカー(イヤホン)のプラス側をpicoのGP0、マイナスをGNDに接続(もちろんモノラル)
  3. picoにCircuitPythonをインストール
  4. mp3ファイルをpicoに転送
  5. 次のコードで再生
import board
import audiomp3
import audiopwmio

audio = audiopwmio.PWMAudioOut(board.GP0)
decoder = audiomp3.MP3Decoder(open("sample.mp3", "rb"))
print("Playing...")
audio.play(decoder)
while audio.playing:
    pass
print("Done playing!")

ただし、出力が弱いので、スピーカーに耳を近づけないとよく聞こえない程度です。パワーアンプを通す必要があります。

なお、SDカードから音源ファイルを入力する場合は、SDカードのライブラリを追加して、mp3のパスを変えるだけです。

1

Comments

  1. 追伸;

    i2s接続してDAC経由すれば、ステレオで高音質で聴けると思います。

    i2sなら、wavファイルの再生ができるようです。


    GP0 to i2s BCLK
    GP1 to i2s LRC
    GP2 to i2s DIN

    import audiocore
    import board
    import audiobusio
    
    audio = audiobusio.I2SOut(board.GP0, board.GP1, board.GP2)
    wave_file = open("demo.wav", "rb")
    wav = audiocore.WaveFile(wave_file)
    print("Playing wav file!")
    audio.play(wav)
    while audio.playing:
        pass
    print("Done!")
    
  2. ↓記事を書きました。ご参考まで。

Your answer might help someone💌